package com.platform.service.impl;

import com.platform.dao.OrderDao;
import com.platform.dao.UserInviterDao;
import com.platform.entity.OrderEntity;
import com.platform.entity.UserInvitees;
import com.platform.entity.UserInviteesExportEntity;
import com.platform.service.InviterService;
import com.platform.vo.UserInviteesVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;
import java.util.stream.Collectors;

/**
 * Service实现类
 *
 * @author lipengjun
 * @email 939961241@qq.com
 * @date 2017-08-16 17:22:46
 */
@Service("inviterService")
public class InviterServiceImpl implements InviterService {
    @Autowired
    private UserInviterDao userInviterDao;

    @Override
    public UserInvitees queryObject(Integer id) {
        return userInviterDao.queryObject(id);
    }

    @Override
    public List<UserInvitees> queryList() {
        return userInviterDao.queryList(null);
    }
        public List<UserInviteesVo> queryUserInviteesList(Map<String, Object> map){
            return userInviterDao.queryUserInviteesList(map);
        }

    @Override
    public List<OrderEntity> queryUserInviteesOrder(Map<String, Object> map) {
        //查询某个邀请人邀请的所有用户
        Integer parentId=Integer.valueOf(map.get("parentId").toString());
        List<UserInviteesVo> userInviteesVos = userInviterDao.queryParentIdByUserId(parentId);

        //取出邀请人邀请的所有用户id
        List<Integer> userIds = userInviteesVos.stream().map(UserInviteesVos -> UserInviteesVos.getUserId()).collect(Collectors.toList());
        //把用户保存在一个数组里面 方便查询所有用户的订单
        List<Integer> list = new ArrayList();
        for(int i=0;i<userIds.size();i++) {
            if (!list.contains(userIds.get(i))) {
                list.add(userIds.get(i));
            }
        }
        map.put("userIds",list);
      return userInviterDao.queryOrderList(map);
    }

    @Override
        public int queryTotal(Map<String, Object> map) {
            return userInviterDao.queryTotal();
        }

        @Override
        public int save(UserInvitees userInvitees) {
            return userInviterDao.save(userInvitees);
        }

        @Override
        public int update(UserInvitees userInvitees) {
            return userInviterDao.update(userInvitees);
        }

        @Override
        public int delete(Integer id) {
            return userInviterDao.delete(id);
        }

        @Override
        public int deleteBatch(Integer[] ids) {
            return userInviterDao.deleteBatch(ids);
        }

    @Override
    public List<UserInviteesExportEntity> export(Integer parentId) {
        return userInviterDao.export(parentId);
    }
}

